package gui;

import junit.framework.TestResult;

/**
 * Classe englobant diverses informations sur les résultats des tests trouvés et
 * effectués à partir d'une classe.
 * 
 * @author gnpt
 */
public class ResultatsTests {
	// Le type de bébête dont on a effectué les tests
	private Class<?> classe;
	// Le TestResult associé
	private TestResult testResult;

	/**
	 * Constucteur.
	 * 
	 * @param classe
	 *            le type de bébête dont on a effectué les tests.
	 * @param tr
	 *            le test result contenant les informations sur les résultats
	 *            des tests passés.
	 */
	public ResultatsTests(Class<?> classe, TestResult tr) {
		this.classe = classe;
		this.testResult = tr;
	}

	/**
	 * Accesseur pour le type de bébête dont on a effectué les tests.
	 * 
	 * @return le type de bébête dont on a effectué les tests.
	 */
	public Class<?> getClasse() {
		return this.classe;
	}

	/**
	 * Testeur indiquant si les tests passés ont tous réussi ou pas.
	 * 
	 * @return booléen indiquant si les tests passés ont tous réussi ou pas.
	 */
	public boolean areTestsReussis() {
		return this.testResult.wasSuccessful();
	}

	/**
	 * Accesseur pour connaître le nombre total de tests effectués.
	 * 
	 * @return le nombre total de tests effectués.
	 */
	public int getNbTestsEffectues() {
		return this.testResult.runCount();
	}

	/**
	 * Accesseur pour connaître le nombre de tests ayant échoués.
	 * 
	 * @return le nombre de tests ayant échoués.
	 */
	public int getNbEchecs() {
		return this.testResult.failureCount();
	}

	/**
	 * Accesseur pour connaître le nombre d'erreurs.
	 * 
	 * @return le nombre d'erreurs rencontré lors des tests.
	 */
	public int getNbErreurs() {
		return this.testResult.errorCount();
	}

	/**
	 * Permet de connaître le pourcentage de tests qui sont passés.
	 * 
	 * @return le pourcentage de tests qui sont passés.
	 */
	public int getPourcentageTestsPasses() {
		return (int) Math.ceil(((this.getNbTestsEffectues() - this
				.getNbEchecs()) / (float) this.getNbTestsEffectues()) * 100);
	}

}
